#include "fxcc/json/Serializer.h"


using namespace fxcc::json;

template<>
void Serializer::Encode<std::string>(nlohmann::json& j, const std::string& e)
{
	j = e;
}

template<>
bool Serializer::Decode<std::string>(const nlohmann::json& j, std::string& e)
{
	if (j.is_string())
	{
		e = j.get<std::string>();
		return true;
	}

	return false;
}


template<>
void Serializer::Encode<int>(nlohmann::json& j, const int& e)
{
	j = e;
}

template<>
bool Serializer::Decode<int>(const nlohmann::json& j, int& e)
{
	e = j.get<int>();
	return true;
}

template<>
void Serializer::Encode<bool>(nlohmann::json& j, const bool& e)
{
	j = e;
}

template<>
bool Serializer::Decode<bool>(const nlohmann::json& j, bool& e)
{
	e = j.get<bool>();
	return true;
}

template<>
void Serializer::Encode<float>(nlohmann::json& j, const float& e)
{
	j = e;
}

template<>
bool Serializer::Decode<float>(const nlohmann::json& j, float& e)
{
	e = j.get<float>();
	return true;
}

template<>
void Serializer::Encode<double>(nlohmann::json& j, const double& e)
{
	j = e;
}

template<>
bool Serializer::Decode<double>(const nlohmann::json& j, double& e)
{
	e = j.get<double>();
	return true;
}





